package com.yeqian.service;

import com.github.pagehelper.Page;
import com.yeqian.entity.PageResult;
import com.yeqian.entity.QueryPageBean;
import com.yeqian.pojo.Article;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @Author : yeqian
 * @Date : 2020/12/24 22:48
 * 文章服务接口
 */
public interface ArticleService {

    /**
     * 修改置顶的文章
     *
     * @param articleId
     * @return void
     * @author yeqian
     * @date 2021/3/24 12:32
     */
    void updateArticleAndRealaTionShip(Integer articleId);

    /**
     *
     * 设置是否置顶
     *
     * @param map
     * @return void
     * @author yeqian
     * @date 2021/1/22 11:23
     */
    void saveArticleAndRealaTionShip(Map<String, Integer> map);

    /**
     * 查询每月的文章数量
     *
     * @param month
     * @return java.lang.Integer
     * @author yeqian
     * @date 2021/1/17 11:32
     */
    Integer getArticleCountByMonth(Date month);

    /**
     * 根据名称查询
     *
     * @param name
     * @return java.util.List<com.yeqian.pojo.Article>
     * @author yeqian
     * @date 2021/1/16 13:20
     */
    List<Article> getArticleByTagId(String name);

    /**
     * 查询最近几篇文章
     *
     * @param maxNumber
     * @return java.util.List<com.yeqian.pojo.Article>
     * @author yeqian
     * @date 2021/1/14 21:08
     */
    List<Article> getRecent(Integer maxNumber);

    /**
     * 查询阅读量最多的几篇文章
     *
     * @param maxNumber
     * @return java.util.List<com.yeqian.pojo.Article>
     * @author yeqian
     * @date 2021/1/14 19:15
     */
    List<Article> listOrderByReadCount(Integer maxNumber);

    /**
     * 获取文章的阅读量
     *
     * @param
     * @return void
     * @author yeqian
     * @date 2021/1/3 10:46
     */
    List<Article> getArticleReadCount();

    /**
     * 获取所有的article的图片的url
     *
     * @param
     * @return java.util.List<java.lang.String>
     * @author yeqian
     * @date 2021/1/10 14:00
     */
    List<String> getUrl();

    /**
     * 增加阅读量
     *
     * @param id
     * @return void
     * @author yeqian
     * @date 2021/1/3 10:44
     */
    void addReadCount(Integer id);

    /**
     * 保存文章阅读量
     *
     * @param map
     * @return void
     * @author yeqian
     * @date 2021/1/2 18:10
     */
    void saveReadCount(Map map);

    /**
     * 获取所有文章的id
     *
     * @param
     * @return java.util.List<java.lang.Integer>
     * @author yeqian
     * @date 2021/1/2 18:06
     */
    List<Integer> getAllArticleId();

    /**
     * 查询所有人的文章记录
     *
     * @param queryPageBean
     * @return com.yeqian.entity.PageResult
     * @author yeqian
     * @date 2020/12/28 22:18
     */
    PageResult getAllArticleByPage(QueryPageBean queryPageBean);

    /**
     * 查询最近n条文章记录
     *
     * @param map
     * @return
     * @author yeqian
     * @date 2020/12/28 15:00
     */
    List<Article> getRecentArticle(Map map);

    /**
     * 获取文章阅读量
     *
     * @param author
     * @return java.lang.Integer
     * @author yeqian
     * @date 2020/12/28 14:04
     */
    Integer getReadCount(Integer author);

    /**
     *
     * 根据文章状态获取文章数量
     *
     * @param status
     * @param author
     * @return java.lang.Integer
     * @author yeqian
     * @date 2020/12/27 23:08
     */
    Integer getTotalCount(Integer status, Integer author);

    /**
     *
     * 根据主键设置回收站
     *
     * @param id
     * @param status
     * @return void
     * @author yeqian
     * @date 2020/12/27 16:46
     */
    void setStatus(Integer id, Integer status);

    /**
     *
     * 根据主键修改文章
     *
     * @param article
     * @return void
     * @author yeqian
     * @date 2020/12/25 0:16
     */
    void updateArticle(Article article);

    /**
     * 根据主键删除文章
     *
     * @param id
     * @return void
     * @author yeqian
     * @date 2020/12/25 0:04
     */
    void deleteArticle(Integer id);

    /**
     * 根据主键查询文章
     *
     * @param id
     * @return
     */
    Article getArticle(Integer id);

    /**
     * 分页查询所有文章
     *
     * @param queryPageBean
     * @param status
     * @return java.util.List<com.yeqian.pojo.Article>
     * @author yeqian
     * @date 2020/12/24 23:06
     */
    PageResult listQueryPage(QueryPageBean queryPageBean, Integer status);

    /**
     * 添加文章
     *
     * @param article
     * @return void
     * @author yeqian
     * @date 2020/12/24 22:56
     */
    void saveArticle(Article article);
}
